package com.rcadmin.busi.web.dao;

import java.util.List;

import javax.annotation.Resource;

import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Component;

import com.google.common.collect.Lists;
import com.rcadmin.busi.web.ddl.WebTemplatePackage;
import com.rcadmin.common.contant.IsEff;
import com.rcadmin.core.jpa.BaseDao;
import com.rcadmin.core.jpa.DaoException;
import com.rcadmin.util.SqlUtil;

/**
 * 主题包DAO
 * 
 * @author tanson lam
 * @create 2016年10月15日
 */
@Component
public class TemplatePackageDao {
	@Resource
	private BaseDao baseDao;

	/**
	 * 查找单个主题包信息
	 * 
	 * @param userId
	 * @param templatePackageId
	 * @return
	 */
	public WebTemplatePackage findOne(Integer userId, Integer templatePackageId) {
		StringBuilder query = new StringBuilder();
		query.append(" and id = ").append(templatePackageId);
		query.append(" and user_id = ").append(userId);
		return baseDao.findOne(query.toString(), WebTemplatePackage.class);
	}

	/**
	 * 根据IDS查询多个主题信息
	 * 
	 * @param ids
	 * @return
	 * @throws DaoException
	 */
	public List<WebTemplatePackage> findByIds(List<Integer> ids) {
		if (CollectionUtils.isEmpty(ids))
			return Lists.newArrayList();
		String sql = " id in (" + SqlUtil.array2InCondition(ids) + ")";
		return baseDao.find(sql, WebTemplatePackage.class);
	}

	/**
	 * 查找所有主题
	 * 
	 * @return
	 */
	public List<WebTemplatePackage> findAll(Integer userId) {
		String sql = "user_id=" + userId;
		return baseDao.find(sql, WebTemplatePackage.class);
	}

	/**
	 * 查找所有生效中的主题
	 * 
	 * @return
	 */
	public List<WebTemplatePackage> findAllEff(Integer userId) {
		String sql = "user_id=" + userId + " and iseff='" + IsEff.EFFECTIVE
				+ "'";
		return baseDao.find(sql, WebTemplatePackage.class);
	}

	/**
	 * 是否有相同的主题名称
	 * 
	 * @param templateId
	 * @param templatePath
	 * @return
	 * @throws DaoException
	 */
	public Boolean isDuplicateName(Integer userId, Integer templatePackageId,
			String name) {
		String sql = "user_id=" + userId + " and name ='" + name + "' ";
		if (templatePackageId != null)
			sql += " and id !=" + templatePackageId;
		List<WebTemplatePackage> list = baseDao.find(sql,
				WebTemplatePackage.class);
		if (list != null && !list.isEmpty()) {
			return true;
		}
		return false;
	}

}
